package com.souche.employment.mapper;

import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.jdbc.SQL;

import java.util.Date;
import java.util.Map;

/**
 * SqlProvider.java created at 2017年8月29日 下午10:13:58
 *
 * @author Ray [email:rayinhangzhou@hotmail.com] Revision History Date Programmer Notes
 * ----------------------------------------------------------
 **/
public class SqlProvider {

    /**
     * 根据类型获取标签，如果type为空，则获取全部
     *
     * @param type
     * @return
     */
    public String getTagNamesByType(String type) {
        SQL sql = new SQL().SELECT("name").FROM("tag");
        if (StringUtils.isNotBlank(type)) {
            sql.WHERE("type = #{type}");
        }
        sql.ORDER_BY("name");
        return sql.toString();
    }

    /**
     * 获取部门列表
     * @param params
     * @return
     */
    public String findDeps(Map<String, String> params) {
        SQL sql = new SQL().SELECT("*").FROM("department");
        if (StringUtils.isNotBlank(params.get("level"))) {
            sql.WHERE("level = #{level}");
        }
        if (StringUtils.isNotBlank(params.get("father"))) {
            sql.WHERE("father = #{father}");
        }
        sql.WHERE("date_delete=0");
        sql.ORDER_BY("convert(name using gbk) asc");
        return sql.toString();
    }

    /**
     * 获取职位列表
     * @return
     */
    public String findJobs(@Param("name") String name, @Param("dep1") String dep1, @Param("dep2") String dep2, @Param("sort") String sort) {
        SQL sql = new SQL().SELECT("*").FROM("job");
        if (StringUtils.isNotBlank(name)) {
            sql.WHERE("name like '%' || #{name} || '%'");
        }
        if (StringUtils.isNotBlank(dep1)) {
            sql.WHERE("dep1 = #{dep1}");
        }
        if (StringUtils.isNotBlank(dep2)) {
            sql.WHERE("dep2 = #{dep2}");
        }
        sql.WHERE("date_delete=0");
        sql.ORDER_BY(sort);
        return sql.toString();
    }

    /**
     * 获取帐号列表
     * @return
     */
    public String findUsers(@Param("id") String id, @Param("type") String type, @Param("sort") String sort) {
        SQL sql = new SQL().SELECT("*").FROM("user");
        if (StringUtils.isNotBlank(id)) {
            sql.WHERE("id like #{id} || '%'");
        }
        if (StringUtils.isNotBlank(type)) {
            sql.WHERE("type = #{type}");
        }
        sql.WHERE("date_delete=0");
        sql.ORDER_BY(sort);
        return sql.toString();
    }

    /**
     * 获取约面记录列表
     * @return
     */
    public String findInterviews(@Param("hr") String hr, @Param("dep1") String dep1, @Param("dep2") String dep2,
                                 @Param("interviewTime0") Date interviewTime0, @Param("interviewTime1") Date interviewTime1, @Param("sort") String sort) {
        SQL sql = new SQL().SELECT("*").FROM("employee");
        if (StringUtils.isNotBlank(hr)) {
            sql.WHERE("interview0 = #{hr}");
        }
        if (StringUtils.isNotBlank(dep1)) {
            sql.WHERE("dep1 = #{dep1}");
        }
        if (StringUtils.isNotBlank(dep2)) {
            sql.WHERE("dep1 = #{dep2}");
        }
        if (interviewTime0 != null) {
            sql.WHERE("interview_time >= #{interviewTime0}");
        }
        if (interviewTime1 != null) {
            sql.WHERE("interview_time < #{interviewTime1}");
        }
        sql.WHERE("interview_time is not null");
        sql.ORDER_BY(sort);
        return sql.toString();
    }


}
